#pragma once
#include <iostream>
#include <string>
#include <unistd.h>
using namespace std;
/*
   Task类为了实现对两个整数进行“+-*%/”操作
*/

class Task
{
public:
    // 构造
    Task() {}
    Task(int x, int y, char op) : _x(x), _y(y), _op(op), _result(0), _exitcode(0)
    {
    }
    // 对操作数进行处理
    void operator()()
    {
        switch (_op)
        {
        case '+':
            _result = _x + _y;
            break;
        case '-':
            _result = _x - _y;
            break;
        case '*':
            _result = _x * _y;
            break;
        case '/':
        {
            if (0 == _y)
                _exitcode = -1;
            else
                _result = _x / _y;
            break;
        }
        case '%':
        {
            if (0 == _y)
                _exitcode = -2;
            else
                _result = _x % _y;
            break;
        }
        default:
            break;
        }
        usleep(10000); //模拟处理任务的时间
    }
     string formatArg()  //表达式
     {
        return to_string(_x) + _op + to_string(_y) + "=";
     }
     string formatRes()  //返回结果
     {
       return to_string(_result) + "(" + to_string(_exitcode) + ")";
     }
    // 析构
    ~Task() {}

private:
    int _x;        // 操作数
    int _y;        // 操作数
    char _op;      // 操作符
    int _result;   // 计算结果
    int _exitcode; // 退出码
};